package com.kclm.se.jcf;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/***
 * <p>HashMap的案例</p>
 * @author yejf
 * @since JDK8.0
 * @CreateDate 2020年8月8日 下午5:23:48 
 * @description 此类用来描述了xxxxx
 *
 */
public class HashMapDemo {

	public static void main(String[] args) {
		//
		Map<Integer, String> map1 = new HashMap<>();
		//
		map1.put(1,"Spring");
		map1.put(2,"Summer");
		map1.put(3,"Autumn");
		map1.put(4,"Winter");
		//
		System.out.printf("集合的大小：%d\n", map1.size());
		map1.put(1,"春天");
		System.out.printf("集合的大小：%d\n", map1.size());
		
		System.out.println("----------------- keySet的迭代 ---------------");
		//迭代1
		Set<Integer> keys = map1.keySet();
		//先迭代 Set
		for(Integer key : keys) {
		    //再根据 key 来获取 value
		    String value = map1.get(key); //通过 key 来获取 value
		    //
		    System.out.printf("%d => %s\n", key, value);
		}
		
		System.out.println("\n----------------- values的迭代 ---------------");
		//
		Collection<String> values = map1.values(); //这个 values方法把key丢掉了。
		//迭代Collection
		for(String value : values) {
		    System.out.println(value); // 注：这种方式，只能获取value,而key不能迭代
		}
		
		System.out.println("\n----------------- entrySet的迭代 ---------------");
		//
		Set<Entry<Integer,String>> entrys = map1.entrySet(); //把key,value同时取出来
		//
		for(Entry<Integer, String> entry : entrys) {
		    //通过 entry 来获取 key和value
		    Integer key = entry.getKey();
		    String value = entry.getValue();
		    //
		    System.out.printf("%d => %s\n", key, value);
		}
		//删除
		if(map1.containsKey(2)) {
			map1.remove(2);
			System.out.println("\n----------------- remove(2)之后,注：2 不是下标，而是key值 ---------------");
			entrys = map1.entrySet(); //把key,value同时取出来
			//
			for(Entry<Integer, String> entry : entrys) {
			    //通过 entry 来获取 key和value
			    Integer key = entry.getKey();
			    String value = entry.getValue();
			    //
			    System.out.printf("%d => %s\n", key, value);
			}
		}
	}
}
